#ifndef TASKCOMPLETEDIALOG_H
#define TASKCOMPLETEDIALOG_H

#include "FramelessWindow.h"
#include <QTextEdit>
#include <QPushButton>
#include <QLabel>
#include <QComboBox>
#include "plan/PlanTask.h"

/**
 * @brief 任务完成对话框
 * 用于记录任务完成时的详细过程、心得总结等
 * [FDD-2025-11] 扩展支持 DoD 结果、阻塞点、产出/证据、状态选择
 */
class TaskCompleteDialog : public FramelessWindow
{
    Q_OBJECT

public:
    explicit TaskCompleteDialog(const PlanTask& task, QWidget *parent = nullptr);
    ~TaskCompleteDialog();

    /**
     * @brief 获取用户输入的完成记录
     */
    QString getCompletionNote() const;

    /**
     * @brief [FDD-2025-11] 获取更新后的任务对象（包含所有新字段）
     */
    PlanTask getUpdatedTask() const;

    /**
     * @brief 模拟 QDialog 的 exec() 方法
     */
    int exec();

signals:
    void accepted();
    void rejected();

private:
    void setupUi();

private slots:
    void onSave();
    void onSkip();
    void onStatusChanged(int index);  // [FDD-2025-11] 状态改变处理

private:
    PlanTask m_task;

    // 基础 UI 组件
    QLabel* m_taskTitleLabel;           // 任务标题标签
    QLabel* m_taskInfoLabel;            // 任务信息标签
    QTextEdit* m_noteEdit;              // 完成记录输入框
    QPushButton* m_saveBtn;             // 保存按钮
    QPushButton* m_skipBtn;             // 跳过按钮

    // [FDD-2025-11] 新增 UI 组件
    QComboBox* m_statusCombo;           // 状态选择
    QTextEdit* m_dodResultEdit;         // DoD 结果确认
    QTextEdit* m_blockersEdit;          // 阻塞点更新
    QTextEdit* m_artifactsSummaryEdit;  // 产出概述
    QTextEdit* m_artifactsLinksEdit;    // 产出链接

    // 数据
    QString m_completionNote;
    int m_result = 0;  // 0=Rejected, 1=Accepted
    bool m_eventLoopStarted = false;
};

#endif // TASKCOMPLETEDIALOG_H




